package org.cy.evolution.ioc.compiler.constant;

import com.squareup.javapoet.ClassName;

public interface EvolutionConstant {
    /**
     * API的基础包
     */
    String BASE_PACKAGE = "org.cy.evolution.ioc";

    String FACTORY_PACKAGE = BASE_PACKAGE + ".factory";
    String CONTEXT_PACKAGE = BASE_PACKAGE + ".context";
    /**
     * 注入代理类名的尾缀
     */
    String INJECTOR_GENERATE_SUFFIX = "Injector";
    /**
     * 注入器接口
     */
    ClassName INTERFACE_INJECTOR = ClassName.get(FACTORY_PACKAGE, "EvolutionInjector");
    /**
     * 注入器接口
     */
    ClassName ABSTRACT_INJECTOR = ClassName.get(FACTORY_PACKAGE, "AbstractEvolutionInjector");
    /**
     * 注入器抽象创建器
     */
    ClassName ABSTRACT_INJECTOR_BUILDER = ClassName.get(FACTORY_PACKAGE, "EvolutionInjector.Builder");

    /**
     * 生成对象代理类名的尾缀
     */
    String COMPONENT_GENERATE_SUFFIX = "Component";
    /**
     * 对象接口
     */
    ClassName INTERFACE_COMPONENT = ClassName.get(FACTORY_PACKAGE, "EvolutionComponent");
    /**
     * 对象抽象创建器
     */
    ClassName ABSTRACT_COMPONENT_BUILDER = ClassName.get(FACTORY_PACKAGE, "EvolutionComponent.Builder");
    /**
     * 全局上下文
     */
    ClassName EVOLUTION_CONTEXT = ClassName.get(CONTEXT_PACKAGE, "EvolutionContext");
}
